﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace LprConfiger.Winform
{

    public partial class NativeConstants
    {

        /// MAX_LANE_NUM -> 8
        public const int MAX_LANE_NUM = 8;

        /// MAX_LAMP_NUM -> 4
        public const int MAX_LAMP_NUM = 4;

        /// MAX_CAMERA_STRATEGY -> 4
        public const int MAX_CAMERA_STRATEGY = 4;

        /// CAMERA_CTRL_MAX -> 11
        public const int CAMERA_CTRL_MAX = 11;
    }

    public enum WORK_STATE
    {

        /// WORK_STATE_NULL -> 0
        WORK_STATE_NULL = 0,

        /// WORK_STATE_NORMAL -> 1
        WORK_STATE_NORMAL = 1,

        /// WORK_STATE_EXCEPTION -> 2
        WORK_STATE_EXCEPTION = 2,
    }

    public enum LAMP_DETECTOR_TYPE
    {

        /// LAMP_DETECTOR_TYPE_NONE -> 0
        LAMP_DETECTOR_TYPE_NONE = 0,

        /// LAMP_DETECTOR_TYPE_KISE -> 1
        LAMP_DETECTOR_TYPE_KISE = 1,

        /// LAMP_DETECTOR_TYPE_DFA -> 2
        LAMP_DETECTOR_TYPE_DFA = 2,
    }

    public enum CONFIG
    {

        /// CONFIG_NONE -> 0
        CONFIG_NONE = 0,

        /// CONFIG_SYS -> 0x1
        CONFIG_SYS = 1,

        /// CONFIG_UNIT -> 0x1<<1
        CONFIG_UNIT = (1) << (1),

        /// CONFIG_LAMP -> 0x1<<2
        CONFIG_LAMP = (1) << (2),

        /// CONFIG_CAMERA -> 0x1<<3
        CONFIG_CAMERA = (1) << (3),

        /// CONFIG_EVENTER -> 0x1<<4
        CONFIG_EVENTER = (1) << (4),

        /// CONFIG_RECO -> 0x1<<5
        CONFIG_RECO = (1) << (5),

        /// CONFIG_VREC -> 0x1<<6
        CONFIG_VREC = (1) << (6),

        /// CONFIG_TEXT -> 0x1<<7
        CONFIG_TEXT = (1) << (7),

        /// CONFIG_REPORT -> 0x1<<8
        CONFIG_REPORT = (1) << (8),

        /// CONFIG_SWITCH -> 0x1<<9
        CONFIG_SWITCH = (1) << (9),
    }

    public enum CAMERA_CTRL : int
    {

        /// CAMERA_CTRL_NONE -> 0
        CAMERA_CTRL_NONE = 0,

        /// CAMERA_CTRL_IMAGE_FPS -> 1
        CAMERA_CTRL_IMAGE_FPS = 1,

        /// CAMERA_CTRL_IMAGE_WIDTH -> 2
        CAMERA_CTRL_IMAGE_WIDTH = 2,

        /// CAMERA_CTRL_IMAGE_HEIGHT -> 3
        CAMERA_CTRL_IMAGE_HEIGHT = 3,

        /// CAMERA_CTRL_VIDEO_FPS -> 4
        CAMERA_CTRL_VIDEO_FPS = 4,

        /// CAMERA_CTRL_VIDEO_WIDTH -> 5
        CAMERA_CTRL_VIDEO_WIDTH = 5,

        /// CAMERA_CTRL_VIDEO_HEIGHT -> 6
        CAMERA_CTRL_VIDEO_HEIGHT = 6,

        /// CAMERA_CTRL_VIDEO_RATE -> 7
        CAMERA_CTRL_VIDEO_RATE = 7,

        /// CAMERA_CTRL_AGC_BASELINE -> 8
        CAMERA_CTRL_AGC_BASELINE = 8,

        /// CAMERA_CTRL_MAX_AGC_GAIN -> 9
        CAMERA_CTRL_MAX_AGC_GAIN = 9,

        /// CAMERA_CTRL_MAX_AGC_TIME -> 10
        CAMERA_CTRL_MAX_AGC_TIME = 10,
    }

    public enum COMPONENT_ID
    {

        /// COMPONENT_ID_LAMP -> 0
        COMPONENT_ID_LAMP = 0,

        /// COMPONENT_ID_CAPTURE -> 1
        COMPONENT_ID_CAPTURE = 1,

        /// COMPONENT_ID_DECODE -> 2
        COMPONENT_ID_DECODE = 2,

        /// COMPONENT_ID_CARD -> 3
        COMPONENT_ID_CARD = 3,

        /// COMPONENT_ID_VIO -> 4
        COMPONENT_ID_VIO = 4,

        /// COMPONENT_ID_RECO -> 5
        COMPONENT_ID_RECO = 5,

        COMPONENT_ID_MAX,
    }

    public enum LAMP_DETECTOR_MSG
    {

        /// LAMP_DETECTOR_MSG_UNKNOWN -> -1
        LAMP_DETECTOR_MSG_UNKNOWN = -1,

        /// LAMP_DETECTOR_MSG_RGY -> 1
        LAMP_DETECTOR_MSG_RGY = 1,

        /// LAMP_DETECTOR_MSG_HEART -> 2
        LAMP_DETECTOR_MSG_HEART = 2,
    }

    public enum LAMP_STATE
    {

        /// LAMP_STATE_UNKNOWN -> -1
        LAMP_STATE_UNKNOWN = -1,

        /// LAMP_STATE_GREEN -> 0
        LAMP_STATE_GREEN = 0,

        /// LAMP_STATE_RED -> 1
        LAMP_STATE_RED = 1,
    }

    public enum DIRECTION
    {

        /// DIRECTION_UNKNOWN -> 0x0
        DIRECTION_UNKNOWN = 0,

        /// DIRECTION_LEFT -> 0x1
        DIRECTION_LEFT = 1,

        /// DIRECTION_STRAIGHT -> 0x1<<4
        DIRECTION_STRAIGHT = (1) << (4),

        /// DIRECTION_RIGHT -> 0x1<<8
        DIRECTION_RIGHT = (1) << (8),

        /// DIRECTION_UTURN -> 0x1<<12
        DIRECTION_UTURN = (1) << (12),
    }

    public enum PICTURE_FORM
    {

        /// PICTURE_FORM_UNKNOWN -> -1
        PICTURE_FORM_UNKNOWN = -1,

        /// PICTURE_FORM_3 -> 1
        PICTURE_FORM_3 = 1,

        /// PICTURE_FORM_3PLUS1 -> 2
        PICTURE_FORM_3PLUS1 = 2,
    }

    public enum FORBIDDEN_TYPE
    {

        /// FORBIDDEN_TYPE_NONE -> 0
        FORBIDDEN_TYPE_NONE = 0,

        /// FORBIDDEN_TYPE_LEFT -> 0x1
        FORBIDDEN_TYPE_LEFT = 1,

        /// FORBIDDEN_TYPE_STRAIGHT -> 0x1<<1
        FORBIDDEN_TYPE_STRAIGHT = (1) << (1),

        /// FORBIDDEN_TYPE_RIGHT -> 0x1<<2
        FORBIDDEN_TYPE_RIGHT = (1) << (2),

        /// FORBIDDEN_TYPE_UTURN -> 0x1<<3
        FORBIDDEN_TYPE_UTURN = (1) << (3),
    }

    public enum VIOLATION_TYPE
    {

        /// VIOLATION_TYPE_UNKOWN -> 0x1<<31
        VIOLATION_TYPE_UNKOWN = (1) << (31),

        /// VIOLATION_TYPE_NONE -> 0x0
        VIOLATION_TYPE_NONE = 0,

        /// VIOLATION_TYPE_RED -> 0x1
        VIOLATION_TYPE_RED = 1,

        /// VIOLATION_TYPE_CHANNEL -> 0x1<<1
        VIOLATION_TYPE_CHANNEL = (1) << (1),

        /// VIOLATION_TYPE_SLINE -> 0x1<<2
        VIOLATION_TYPE_SLINE = (1) << (2),

        /// VIOLATION_TYPE_DLINE -> 0x1<<3
        VIOLATION_TYPE_DLINE = (1) << (3),

        /// VIOLATION_TYPE_CONVERSE -> 0x1<<4
        VIOLATION_TYPE_CONVERSE = (1) << (4),

        /// VIOLATION_TYPE_OVERSPEED -> 0x1<<5
        VIOLATION_TYPE_OVERSPEED = (1) << (5),
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CvPoint
    {

        /// int
        public int x;

        /// int
        public int y;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CvRect
    {

        /// int
        public int x;

        /// int
        public int y;

        /// int
        public int width;

        /// int
        public int height;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct SLine
    {

        /// CvPoint
        public CvPoint start;

        /// CvPoint
        public CvPoint end;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGSysCtrl
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableMonitor;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableFlowReport;

        /// unsigned int
        public uint intervalFlowReport;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi, Pack = 1)]
    public struct CFGSysService
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool bAsClient;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 32)]
        public string serverIP;

        /// unsigned short
        public ushort dataPort;

        /// unsigned short
        public ushort configPort;

        /// unsigned short
        public ushort debugPort;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGCameraCtrlStrategy
    {

        /// CAMERA_CTRL[11]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I4)]
        public CAMERA_CTRL[] items;

        /// byte[11]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I1)]
        public byte[] startHour;

        /// byte[11]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I1)]
        public byte[] endHour;

        /// int[11]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 11, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I4)]
        public int[] value;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGCameraCtrl
    {

        /// unsigned short
        public ushort imageWidth;

        /// unsigned short
        public ushort imageHeight;

        /// unsigned char
        public byte imageFPS;

        /// unsigned short
        public ushort videoWidth;

        /// unsigned short
        public ushort videoHeight;

        /// int
        public int videoRate;

        /// char
        public byte strategyNum;

        /// char
        public byte strategyItemNum;

        /// CFGCameraCtrlStrategy[4]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
        public CFGCameraCtrlStrategy[] items;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi, Pack = 1)]
    public struct CFGCamera
    {

        /// char[32]
        [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 32)]
        public string IP;

        /// boolean
        [MarshalAs(UnmanagedType.I1)]
        public bool enableCtrl;

        /// CFGCameraCtrl
        public CFGCameraCtrl ctrl;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi, Pack = 1)]
    public struct CFGInfo
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool isEPoliceSys;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 32)]
        public string monitorID;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 32)]
        public string directionID;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] monitorName;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] directionName;

        /// char[32]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 32)]
        public string machineID;

        /// unsigned short
        public UInt16 laneNum;

        /// unsigned short[8]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = System.Runtime.InteropServices.UnmanagedType.U2)]
        public ushort[] limitSpeed;
    }

    public enum COLOR
    {

        /// COLOR_NONE -> 0
        COLOR_NONE = 0,

        /// COLOR_RED -> 1
        COLOR_RED = 1,

        /// COLOR_GREEN -> 2
        COLOR_GREEN = 2,

        /// COLOR_BLUE -> 3
        COLOR_BLUE = 3,

        /// COLOR_WHTITE -> 4
        COLOR_WHTITE = 4,

        /// COLOR_BLACK -> 5
        COLOR_BLACK = 5,

        /// COLOR_DARK_RED -> 6
        COLOR_DARK_RED = 6,
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGText
    {

        /// unsigned char
        public byte fontSize;

        /// COLOR
        public COLOR color;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGOSDFlag
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgMachineNo;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgAddr;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgDirection;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgLaneNo;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgTime;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgPlate;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgPlateColor;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgVehicleStyle;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgSpeed;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawImgViolation;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawVideoAddr;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawVideoDirection;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool drawVideoTime;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
    public struct CFGBackup
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enable;

        /// int
        public int number;

        /// char[128]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 128)]
        public string dir;

        /// char[128]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 128)]
        public string dbName;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi, Pack = 1)]
    public struct CFGVideoStore
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enable;

        /// int
        public int timePerFile;

        /// int
        public int maxDay;

        /// char[128]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 128)]
        public string dir;

        /// char[128]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 128)]
        public string dbName;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGCommon
    {

        /// CFGInfo
        public CFGInfo baseInfo;

        /// CFGSysCtrl
        public CFGSysCtrl sysCtrl;

        /// CFGSysService
        public CFGSysService sysService;

        /// CFGCamera
        public CFGCamera camera;

        /// CFGOSDFlag
        public CFGOSDFlag osdFlags;

        /// CFGText
        public CFGText text;

        /// CFGBackup
        public CFGBackup backup;

        /// CFGVideoStore
        public CFGVideoStore videoStore;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGGatewayVideoSpeed
    {

        /// unsigned short
        public ushort leftTopX;

        /// unsigned short
        public ushort leftTopY;

        /// unsigned short
        public ushort rightTopX;

        /// unsigned short
        public ushort rightTopY;

        /// unsigned short
        public ushort leftBottomX;

        /// unsigned short
        public ushort leftBottomY;

        /// unsigned short
        public ushort rightBottomX;

        /// unsigned short
        public ushort rightBottomY;

        /// float
        public float roadWidth;

        /// float
        public float roadHeight;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGGatewayAlgo
    {

        /// CvRect
        public CvRect detectRegion;

        /// float
        public float recoVideoRatio;

        /// CFGGatewayVideoSpeed
        public CFGGatewayVideoSpeed speed;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGGatewaySwitch
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableVideoReco;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableVideoSpeed;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGGateway
    {

        /// CFGGatewaySwitch
        public CFGGatewaySwitch switches;

        /// CFGGatewayAlgo
        public CFGGatewayAlgo algo;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGLane
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableSimulate;

        /// int
        public int directions;

        /// int
        public int dirLamps;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool isSpecialConverse;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableRed;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableChannel;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableCrossLine;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableConverse;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGLamp
    {

        /// int
        public int shape;

        /// CvRect[3]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
        public CvRect[] regions;

        /// int
        public int greenDelay;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGPoliceLamp
    {

        /// int
        public int hwType;

        /// int
        public int number;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableCorrect;

        /// int
        public int correctLevel;

        /// CFGLamp[4]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
        public CFGLamp[] lamps;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(LayoutKind.Sequential, Pack = 1)]
    public struct CFGPoliceOutput
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableGateway;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableNoPlate;

        /// int
        public int jpegMaxKb;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableBanner;

        /// PICTURE_FORM
        public PICTURE_FORM pictureForm;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableVideo;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableMachine;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)]
    public struct CFGPoliceEvent
    {

        /// int
        public int minification;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableCrossLight;

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enableDebug;

        /// SLine[24]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 24, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
        public SLine[] lines;

        /// int
        public int forbiddenTypes;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi, Pack = 1)]
    public struct CFGReco
    {

        /// boolean
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)]
        public bool enable;

        /// float
        public float ratio;

        /// char[4]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] province;
    }

    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]
    public struct CFGPolice
    {

        /// CFGPoliceOutput
        public CFGPoliceOutput outputCtrl;

        /// CFGLane[8]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = System.Runtime.InteropServices.UnmanagedType.Struct)]
        public CFGLane[] lanes;

        /// CFGPoliceLamp
        public CFGPoliceLamp allLamp;

        /// CFGPoliceEvent
        public CFGPoliceEvent eventDetect;

        /// CFGReco
        public CFGReco reco;
    }



}
